import os  
import glob  
  
# 获取当前路径下所有PDF文件的完整路径，并保存到缓存中  
def generate_pdf_cache():
    pdf_cache = []
    for subitem in os.listdir("2024年"):
        if os.path.isdir(os.path.join("2024年", subitem)):
            month_path = os.path.join("2024年", subitem)
            for pdf_file in glob.glob(os.path.join(month_path, '*.pdf')):
                pdf_cache.append(pdf_file)
    return pdf_cache  
  
# 将PDF文件路径保存到缓存文件  
def save_pdf_cache(pdf_cache):  
    with open('2024质保书缓存文件.txt', 'w', encoding='utf-8') as cache_file:
        for path in pdf_cache:  
            cache_file.write(path + '\n')  
  
# 从缓存文件中读取PDF文件路径  
def read_pdf_cache():  
    if os.path.exists('2024质保书缓存文件.txt'):
        with open('2024质保书缓存文件.txt', 'r', encoding='utf-8') as cache_file:
            return cache_file.read().splitlines()  
    return []  
  
def find_and_open_pdf(filename, pdf_cache):  
    filename_without_ext = os.path.splitext(filename)[0]  # 去除文件扩展名  
    found_paths = []  
    for pdf_path in pdf_cache:  
        if filename_without_ext in os.path.basename(pdf_path):  
            found_paths.append(pdf_path)  
            #print(f"找到匹配的质保书路径：{pdf_path}")  
      
    if found_paths:  
        # 如果找到多个匹配项，询问用户要打开哪一个，或者打开第一个  
        if len(found_paths) > 1:  
            print("找到多个匹配的质保书，请选择要打开的文件：")  
            for i, path in enumerate(found_paths):  
                print(f"{i+1}. {path}")  
            choice = int(input(f"请输入要打开的文件的编号（1-{len(found_paths)}）: ")) - 1  
            if 0 <= choice < len(found_paths):  
                os.startfile(found_paths[choice])  
                print(f"已为您打开质保书：{found_paths[choice]}")
                return True
            else:  
                print("输入无效，未打开任何文件。")  
        else:  
            # 只有一个匹配项，直接打开  
            os.startfile(found_paths[0])  
            print(f"已为您打开质保书：{found_paths[0]}")  
            return True

    else:  
        print(f"缓存中未找到名为 {filename_without_ext} 的质保书。")
  
# 主程序  
def main():  
    # 初始化PDF文件缓存  
    pdf_cache = read_pdf_cache()  
    if not pdf_cache:  
        print("正在生成质保书缓存...")  
        pdf_cache = generate_pdf_cache()  
        save_pdf_cache(pdf_cache)  
        print("质保书缓存已生成并保存。")
        print("========================")
      
    # 循环读取用户输入并尝试打开PDF文件  
    while True:  
        filename = input("请输入你需要打开的2024年质保书名字（不包含.pdf后缀）: ")
        if find_and_open_pdf(filename, pdf_cache):
            print("========================")
            continue  
        else:  
            print("缓存中未找到对应的2024年质保书，正在更新缓存...")
            # 更新缓存并再次尝试查找  
            pdf_cache = generate_pdf_cache()  
            save_pdf_cache(pdf_cache)  
            if find_and_open_pdf(filename, pdf_cache):
                print("========================")
                continue  
            else:  
                print(f"无法找到名为 {filename} 的质保书，请检查输入是否正确或文件是否存在。")
                print("========================")
if __name__ == "__main__":  
    main()
    
